/*
接口比抽象类还抽象，接口只代表某个确切的功能，也就是只保留方法的定义，它不是类。
邮件新建的时候，不是选择java，而是interface
接口包含了一系列方法的具体定义，类可以通过implement关键词实现这个接口，表示类支持这个接口代表的功能。
接口类似于一个插件，作为一个附属功能插到主体（类）上，具体实现还要由主体来实现。
 */
package com.test.Encapsulation_Inheritance_Polymorphism;

public interface StuInterface {  //使用interface表明是一个接口类型，不再是class
    void sport();  //只包含方法的定义
    //接口只能包含public的抽象方法，默认就是public的抽象方法。如果给方法前加上public abstract，idea会提示冗余
    public abstract void study();

    //java8后接口可以有默认实现，使用default关键词给抽象方法一个默认实现，java8以前只能有public abstract。
    default void eat(){  //比如一些共性是通用的，想用这个接口的时候，实现了就直接用，不用每个类里面都定义一个
        System.out.println("不管是什么学生都要吃饭");
    }

    //接口中定义的变量，是public static final的，定义的时候就要赋值（final要求定义时初始化）
    int a = 10;  //加上public static final关键词，会提示冗余
//    a = 20;  再赋值就会报错
}
